竹内郁雄先生のたらい回し関数というと、こういうのです。
[crayon lang=”scheme” title=”takm.scm”]
(defun tak (x y z)  ; 日本語コメントのテスト
  (if (<= x y)      ; 引数を3つ取り、自分自身を再帰的に
      z             ; 呼び出すのがtakと呼ばれる
      (tak (tak (1- x) y z)    ; この関数です。
           (tak (1- y) z x)    ; 何度も何度も再帰的に
           (tak (1- z) x y)))) ; たらい回ししますが必ず終了します
[/crayon]
ところが、これはマッカーシーが間違えて覚えて広めてしまったものだそうで、竹内郁雄先生のオリジナルは
[crayon lang="scheme" title="tak.scm"]
(defun tak (x y z)  ; 日本語コメントのテスト
  (if (<= x y)      ; 引数を3つ取り、自分自身を再帰的に
      y             ; 呼び出すのがtakと呼ばれる
      (tak (tak (1- x) y z)    ; この関数です。
           (tak (1- y) z x)    ; 何度も何度も再帰的に
           (tak (1- z) x y)))) ; たらい回ししますが必ず終了します
[/crayon]
こちらだそうです。
最初のifが真のときに返す値が違います。
 
                
                                    


